
/**
 * @author: 刘俊重
 * Resource：https://leetcode-cn.com/problems/lemonade-change/
 * Resolution: https://blog.csdn.net/Pmithie/article/details/82915465
 */
public class LemonadeChange {
    public static void main(String[] args) {
        int[] bills = {5,5,10};
        System.out.println(lemonadeChange(bills));
    }

    public static boolean lemonadeChange(int[] bills) {
        if(bills[0]!=5){
            //如果第一个账单不是5，不能找零，直接返回
            return false;
        }
        int size = bills.length;
        //当前5元和10元账单的计数
        int fiveCount = 1;
        int tenCount = 0;
        for(int i=1;i<size;i++){
            if(bills[i]==5){
                //账单是5元，无需找零
                fiveCount++;
            }else if(bills[i]==10){
                //账单是10元，找5块
                fiveCount--;
                tenCount++;
            }else if(bills[i]==20){
                //需要找15元，如果没有5元的直接返回
                if(fiveCount<=0){
                    return false;
                }else if(tenCount>0){
                    //如果有10元的，优先先花掉10元的
                    tenCount--;
                    fiveCount--;
                }else if(fiveCount>=3){
                    //扣掉3张5元的
                    fiveCount-=3;
                }else{
                    return false;
                }
            }else{
                return false;
            }
        }

        return true;
    }
}
